Computers have become an integral part of society in many different facets. They can be found in businesses, homes, and even cars. In the beginning computers were standalone devices with limited means to input and output information. As computing technology progresses, however, there is an overwhelming desire for them to communicate with each other to relay information. The techniques for communication can be simple dial-up modem connections or complex satellite communications and the like. Although techniques to communicate have improved, such as with the advent of the Internet, the ability for one software application to talk to another software application is often hampered by software language, protocol, and database storage disparities. Applications are often written in different software languages that utilize varying interface protocols, making it difficult to efficiently communicate with other applications. This disparity has been heightened with the development of the Internet. It has brought a tremendous increase of users “online,” all of whom want to communicate with different hardware platforms, different software applications, and different operating systems.
Attempts have been made at creating a ubiquitous computing platform as a solution to this issue. However, this has not proven successful for many reasons—one of which is that no one entity has control over all users in a given scenario. When control is available, such as within a corporate environment, operating systems, hardware, and software applications can be controlled such that they can easily communicate. However, oftentimes companies find outside software vendors who offer a better or less expensive alternative to their current applications and desire to use those products instead. Thus, disparate applications even find their way into environments where one entity can control the computing systems. In order to resolve these types of disparity, a solution called “web services” was introduced.
Web services (WS) allow organizations to communicate data without intimate knowledge of each other's IT systems behind a firewall. Unlike traditional client/server models, such as a web server/web page system, web services do not provide a user with a graphical user interface (GUI). Rather, web services share business logic, data, and processes through a programmatic interface across a network. Thus, applications interface as compared to users interfacing. The web services can then be added to a GUI, such as a web page or an executable program, to offer specific functionality to users. Moreover, web services allow different applications from different sources to communicate with each other without time-consuming custom coding, and because the communication is in extensible markup language (XML), web services are not tied to any one operating system or programming language.
These web services offer a practical solution when they can be controlled by an entity such as in an enterprise environment. This is due to the fact that software applications can be made to interface efficiently when both communicating applications can be augmented by the entity. Robustness of the communications can be ensured through a “bilateral” communication process that adheres to a single protocol standard. This type of process, however, does not lend itself well to the open internet environment where all parties to a communication cannot be controlled by a single entity. For example, users wishing to purchase a product from a business online utilize any type of application, hardware, and browser that they possess. The business itself cannot control the products that the user employs. Thus, bilateral types of solutions do not easily apply to this type of open environment.
For example, if a user wants to purchase an airline ticket online and a failure occurs during the ticket purchase transaction, it is possible that the user might click the purchase button more than once if they do not receive an immediate response. The airline may not realize that the transaction had momentarily failed and interpret the multiple purchase requests by the user to mean that they want multiple tickets. Obviously, the user would not be happy to receive a bill for two tickets if only one is desired. The disparity of the systems needs to be overcome so that the transaction can occur with a certain amount of robustness. In other words, the user's products need to be able to communicate reliably with other diverse and often unknown products.